<?php

/*
|--------------------------------------------------------------------------
| Create The Application
|--------------------------------------------------------------------------
|
| The first thing we will do is create a new Laravel application instance
| which serves as the "glue" for all the components of Laravel, and is
| the IoC container for the system binding all of the various parts.
|
*/

$app = new Illuminate\Foundation\Application(
    $_ENV['APP_BASE_PATH'] ?? dirname(__DIR__)
);

/*
|--------------------------------------------------------------------------
| Bind Important Interfaces
|--------------------------------------------------------------------------
|
| Next, we need to bind some important interfaces into the container so
| we will be able to resolve them when needed. The kernels serve the
| incoming requests to this application from both the web and CLI.
|
*/

$app->singleton(
    Illuminate\Contracts\Http\Kernel::class,
    App\Http\Kernel::class
);

$app->singleton(
    Illuminate\Contracts\Console\Kernel::class,
    App\Console\Kernel::class
);

$app->singleton(
    Illuminate\Contracts\Debug\ExceptionHandler::class,
    App\Exceptions\Handler::class
);

/**
 * @see .env
 * @author sky
 * @return \Illuminate\Contracts\Foundation\Application
 * @see 根据不同的env加载不同的配置文件,上线前请屏蔽当前代码
 * @see 2019-08-29 15:31:57
 * @version 1.0.0
 */
// $env = $app->detectEnvironment(function () use ($app) {
//     $environmentPath = __DIR__ . '/../.env';
//     $envContent = trim(file_get_contents($environmentPath));
//     $environment = '';
//     if (file_exists($environmentPath) && !empty($envContent)) {
//         $lines = explode("\n", $envContent); // 将内容按行分割  
//         foreach ($lines as $line) {
//             $trimmedLine = trim($line); // 去除行首行尾的空格和换行符  
//             if (strpos($trimmedLine, '=') !== false) { // 检查行中是否包含"="字符  
//                 $keyValue = explode('=', $trimmedLine); // 将行按"="分割成键和值  
//                 $key = trim($keyValue[0]); // 去除键名前的空格和换行符  
//                 $value = trim($keyValue[1]); // 去除值前的空格和换行符  
//                 if ($key == 'APP_ENV') {
//                     $environment = '.' . $value;
//                     break;
//                 }
//             }
//         }
//     }
//     $app->loadEnvironmentFrom('.env' . $environment);
// });

/*
|--------------------------------------------------------------------------
| Return The Application
|--------------------------------------------------------------------------
|
| This script returns the application instance. The instance is given to
| the calling script so we can separate the building of the instances
| from the actual running of the application and sending responses.
|
*/

return $app;
